Ciencia de Datos con R: Riesgo de Crédito

Seminario Internacional de Matemática y Estadística

Walter Quispe Vargas, PhD

Colegio de Matemáticos del Perú, Region Cusco

2023-10-11

Contenido

  • Día 1

    • Introducción

    • Ciencia de Datos con R

  • Día 2

    • Aplicación: Riesgo de Crédito

Introducción

¿Que es Ciencia de Datos?

  • Ciencia de Datos: Es el estudio de extraer valor de los datos (Wings, 2019), Harvard Data Science Review.
  • Estadística: Es la ciencia de aprender de los datos y medir, controlar y comunicar la incertidumbre, American Statistical Association.
  • Academia: Falta de consenso para describir los principios fundamentales, la experiencia, las habilidades o la base de conocimientos para ser un científicos de datos.

Introducción

  • Científico de Datos : The Sexiest Job of the 21st Century (Davenport & Patil, 2012), Harvard Business Review.
  • El término científico de datos se volvió útil para hacer la distinción entre, aquellos con experiencia organizando y analizando datos, escribiendo código rápido y eficiente, de aquellos con más experiencia teórica Matemática, Estadística y Computación. (Irizarry, 2020) Harvard Data Science Review.

Introducción

  • La ciencia de datos: “Es un término general que describe todos los procesos complejos y de varios pasos utilizados para extraer valor de los datos” (Irizarry, 2020), Harvard Data Science Review.

Ciencia de Datos con R

  • Pasos para un proyecto de ciencia de datos

Ciencia de Datos con R

Primeros Pasos

library(tidyverse)
library(kableExtra)
library(datos)
library(janitor)
# millas |> view()
millas |> 
  head(30) |> 
  kable()|> 
  row_spec(seq(1,30,2), background="cyan") %>% 
  kable_styling(full_width=FALSE)
fabricante modelo cilindrada anio cilindros transmision traccion ciudad autopista combustible clase
audi a4 1.8 1999 4 auto(l5) d 18 29 p compacto
audi a4 1.8 1999 4 manual(m5) d 21 29 p compacto
audi a4 2.0 2008 4 manual(m6) d 20 31 p compacto
audi a4 2.0 2008 4 auto(av) d 21 30 p compacto
audi a4 2.8 1999 6 auto(l5) d 16 26 p compacto
audi a4 2.8 1999 6 manual(m5) d 18 26 p compacto
audi a4 3.1 2008 6 auto(av) d 18 27 p compacto
audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compacto
audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compacto
audi a4 quattro 2.0 2008 4 manual(m6) 4 20 28 p compacto
audi a4 quattro 2.0 2008 4 auto(s6) 4 19 27 p compacto
audi a4 quattro 2.8 1999 6 auto(l5) 4 15 25 p compacto
audi a4 quattro 2.8 1999 6 manual(m5) 4 17 25 p compacto
audi a4 quattro 3.1 2008 6 auto(s6) 4 17 25 p compacto
audi a4 quattro 3.1 2008 6 manual(m6) 4 15 25 p compacto
audi a6 quattro 2.8 1999 6 auto(l5) 4 15 24 p mediano
audi a6 quattro 3.1 2008 6 auto(s6) 4 17 25 p mediano
audi a6 quattro 4.2 2008 8 auto(s6) 4 16 23 p mediano
chevrolet c1500 suburban 2wd 5.3 2008 8 auto(l4) t 14 20 r suv
chevrolet c1500 suburban 2wd 5.3 2008 8 auto(l4) t 11 15 e suv
chevrolet c1500 suburban 2wd 5.3 2008 8 auto(l4) t 14 20 r suv
chevrolet c1500 suburban 2wd 5.7 1999 8 auto(l4) t 13 17 r suv
chevrolet c1500 suburban 2wd 6.0 2008 8 auto(l4) t 12 17 r suv
chevrolet corvette 5.7 1999 8 manual(m6) t 16 26 p 2asientos
chevrolet corvette 5.7 1999 8 auto(l4) t 15 23 p 2asientos
chevrolet corvette 6.2 2008 8 manual(m6) t 16 26 p 2asientos
chevrolet corvette 6.2 2008 8 auto(s6) t 15 25 p 2asientos
chevrolet corvette 7.0 2008 8 manual(m6) t 15 24 p 2asientos
chevrolet k1500 tahoe 4wd 5.3 2008 8 auto(l4) 4 14 19 r suv
chevrolet k1500 tahoe 4wd 5.3 2008 8 auto(l4) 4 11 14 e suv
millas |>
  count(fabricante) |> 
  kable()|> 
  row_spec(seq(1,15,2), background="cyan") %>% 
  kable_styling(full_width=FALSE)
fabricante n
audi 18
chevrolet 19
dodge 37
ford 25
honda 9
hyundai 14
jeep 8
land rover 4
lincoln 3
mercury 4
nissan 13
pontiac 5
subaru 14
toyota 34
volkswagen 27
millas |> 
  select(cilindrada) |> 
  summary() |> 
  kable()|> 
  row_spec(seq(1,6,2), background="cyan") %>% 
  kable_styling(full_width=FALSE)
cilindrada
Min. :1.600
1st Qu.:2.400
Median :3.300
Mean :3.472
3rd Qu.:4.600
Max. :7.000
library(skimr)
millas |>
  skim() |> 
  kable()|> 
  row_spec(seq(1,11,2), background="cyan") %>% 
  kable_styling(full_width=FALSE)
skim_type skim_variable n_missing complete_rate character.min character.max character.empty character.n_unique character.whitespace numeric.mean numeric.sd numeric.p0 numeric.p25 numeric.p50 numeric.p75 numeric.p100 numeric.hist
character fabricante 0 1 4 10 0 15 0 NA NA NA NA NA NA NA NA
character modelo 0 1 2 22 0 38 0 NA NA NA NA NA NA NA NA
character transmision 0 1 8 10 0 10 0 NA NA NA NA NA NA NA NA
character traccion 0 1 1 1 0 3 0 NA NA NA NA NA NA NA NA
character combustible 0 1 1 1 0 5 0 NA NA NA NA NA NA NA NA
character clase 0 1 3 11 0 7 0 NA NA NA NA NA NA NA NA
numeric cilindrada 0 1 NA NA NA NA NA 3.471795 1.291959 1.6 2.4 3.3 4.6 7 ▇▆▆▃▁
numeric anio 0 1 NA NA NA NA NA 2003.500000 4.509646 1999.0 1999.0 2003.5 2008.0 2008 ▇▁▁▁▇
numeric cilindros 0 1 NA NA NA NA NA 5.888889 1.611535 4.0 4.0 6.0 8.0 8 ▇▁▇▁▇
numeric ciudad 0 1 NA NA NA NA NA 16.858974 4.255946 9.0 14.0 17.0 19.0 35 ▆▇▃▁▁
numeric autopista 0 1 NA NA NA NA NA 23.440171 5.954643 12.0 18.0 24.0 27.0 44 ▅▅▇▁▁
theme_set(theme_minimal())
millas |>
  ggplot(aes(clase))+
  geom_bar(colour='magenta',fill='magenta',alpha=0.5)+
  geom_text(stat='count', aes(label = ..count..), vjust = -1)+
  scale_y_continuous(limits = c(0, 70))

millas |>
  count(cilindros) |>
  mutate(cilindros=as.character(cilindros)) |> 
  ggplot(aes(x = "", y = n, fill = cilindros))+
  geom_col(color = "gray")+
  coord_polar(theta = "y")+
  geom_text(aes(label = n),
            color = "white",
            position = position_stack(vjust = 0.5,))+
  theme_void()

library(plotly)
p <- millas |>
  ggplot(aes(cilindrada, fill=..count..))+
  geom_histogram(color='gray')+
  scale_fill_gradient(low="white", high="ForestGreen")+
  guides(fill=F)
ggplotly(p)
(millas |>
  ggplot(aes(cilindrada))+
  geom_histogram(aes(y= ..density..),color='gray', fill='white')+
  geom_density(color='ForestGreen', fill='ForestGreen', alpha=0.4))|>
  ggplotly()
millas |>
  ggplot(aes(x=cilindrada, y=""))+
  geom_boxplot(color='ForestGreen', fill='ForestGreen', alpha=0.4)+
  geom_jitter(alpha=0.4)

theme_set(theme_minimal())
(millas |>
 ggplot(mapping = aes(x = cilindrada, y = autopista)) +
 geom_point(mapping = aes(color = traccion))+
 geom_smooth()) |> 
  ggplotly()
millas |>
 ggplot(mapping = aes(x = cilindrada, y = autopista)) +
 geom_point(mapping = aes(color = traccion))+
 facet_wrap(~ clase, nrow = 2)